# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Games.V1.Model.PlayerScoreResponse do
  @moduledoc """
  A list of leaderboard entry resources.

  ## Attributes

  *   `beatenScoreTimeSpans` (*type:* `list(String.t)`, *default:* `nil`) - The time spans where the submitted score is better than the existing score for that time span.
  *   `formattedScore` (*type:* `String.t`, *default:* `nil`) - The formatted value of the submitted score.
  *   `kind` (*type:* `String.t`, *default:* `nil`) - Uniquely identifies the type of this resource. Value is always the fixed string `games#playerScoreResponse`.
  *   `leaderboardId` (*type:* `String.t`, *default:* `nil`) - The leaderboard ID that this score was submitted to.
  *   `scoreTag` (*type:* `String.t`, *default:* `nil`) - Additional information about this score. Values will contain no more than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
  *   `unbeatenScores` (*type:* `list(GoogleApi.Games.V1.Model.PlayerScore.t)`, *default:* `nil`) - The scores in time spans that have not been beaten. As an example, the submitted score may be better than the player's `DAILY` score, but not better than the player's scores for the `WEEKLY` or `ALL_TIME` time spans.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :beatenScoreTimeSpans => list(String.t()) | nil,
          :formattedScore => String.t() | nil,
          :kind => String.t() | nil,
          :leaderboardId => String.t() | nil,
          :scoreTag => String.t() | nil,
          :unbeatenScores => list(GoogleApi.Games.V1.Model.PlayerScore.t()) | nil
        }

  field(:beatenScoreTimeSpans, type: :list)
  field(:formattedScore)
  field(:kind)
  field(:leaderboardId)
  field(:scoreTag)
  field(:unbeatenScores, as: GoogleApi.Games.V1.Model.PlayerScore, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.Games.V1.Model.PlayerScoreResponse do
  def decode(value, options) do
    GoogleApi.Games.V1.Model.PlayerScoreResponse.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Games.V1.Model.PlayerScoreResponse do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
